import { defineStore } from "pinia";
import { useAppStore  } from './storeOne.js'

// 在使用仓库状态数据前，先使用defineStore()进行定义一个仓库，需要使用唯一的名字进行命名
export const useCounterStore = defineStore("counter", {
  state: () => {
    return {
      count: 0,
      todos: [],
      speak: 'hahah',
      userData: null,
      name: '张三',
      son: '恩科'
    }
  },
  getters: {
   fullName: state => {
     return state.name + '丰' 
   }
  },
  // 一般不建议直接修改state的值，Pinia中建议使用actions方法去修改和管理state的值。
  actions: {
    increment() {
      this.count++
    },
    updateName(sonName) {
      this.son = sonName
    },
    // action 可以像写一个简单的函数一样支持 async/await 的语法，让你愉快的应付异步处理的场景
    // action可以通过this直接调用另一个action的方法
    // 也可以在action里调用其他store里的action，引入对应的store后即可访问其内部方法了
    async login() {
      // const { data } = await api.login(account, pwd)
      const data = { account: 'zhangfan', pwd: 123 }
      this.getList(data) 
      const appStore = useAppStore()
      appStore.changeInfo() // 调用appStore里的action方法
      return data
    },
    getList(data) {
      this.userData = data
    }

  },
  persist: {
    enabled: true, // 自定义数据缓存
    strategies: [
      {
        key: 'my_user', // 自定义key值
        storage: sessionStorage, // 自定义存放位置
        paths: ['name'] // 持久化部分state
      }
    ]
  }  
});
